package com.sudo.service;

import com.sudo.pojo.SysMenu;
import com.sudo.pojo.bo.SysMenuBO;
import com.sudo.pojo.vo.SimpleSysMenuVO;
import com.sudo.pojo.vo.SysMenuVO;

import java.util.List;

/**
 * @author：为道日损 2020-04-24 13:51
 */
public interface SysMenuService {

    /**
     * 通过用户名或邮箱获取级联菜单
     * @param mailOrUsername 角色代码
     * @return list
     */
    List<SysMenu> queryMySysMenuByMailOrUsername(String mailOrUsername);

    /**
     * 后台查询菜单列表，制作成一个ZTree
     * @return list
     */
    List<SysMenuVO> getCascadeSysMenuList();

    /**
     * 简单级联菜单
     * 后台查询菜单列表，制作成一个ZTree
     * @return list
     */
    List<SimpleSysMenuVO> getSimpleCascadeSysMenuList(String menuCode, String status);

    SysMenu getSysMenuByCode(String menuCode);

    /**
     * 查询一二级菜单
     * @return
     */
    List<SysMenuVO> getOneTwoCascadeSysMenuList();

    /**
     * 修改菜单
     * @param sysMenuBO
     * @return
     */
    int updateSysMenuByCode(SysMenuBO sysMenuBO,String sessionUser);

    /**
     * 新增菜单
     * @param sysMenuBO 菜单
     * @param username 用户
     * @return int
     */
    int addSysMenu(SysMenuBO sysMenuBO, String sessionUser);

    int deleteSysMenuByCode(String menuCode);

    /**
     * 判断当前菜单是否还有子菜单
     * @param menuCode
     * @return true/false
     */
    boolean hasSubSysMenu(String menuCode);

    boolean hasSysMenu(String menuCode);

    boolean isSubMenuOrMyself(String menuCode, String OtherMenuCode);

    boolean isMoveSysMenu(String menuCode, String OtherMenuCode);
}
